import unittest
from common.functions import browser_operation
from page.reception.index_page import IndexPage
from page.reception.register_page import RegisterPage
# TODO 测试异常数据流程,仅必填数据



class RegisterTestCase(unittest.TestCase):
    @classmethod
    def setUpClass(cls) -> None:
        """
        打开浏览器，创建对象
        """
        driver = browser_operation()
        cls.reg = RegisterPage(driver)
        cls.index = IndexPage(driver)

    def test_01_register(self):
        """
        用户名为假，其他为真
        """
        # 请求网址
        self.reg.get_website(self.reg.register_url)
        # 输入用户名
        self.reg.username_ipt('12')
        # 输入邮箱
        self.reg.email_ipt('test5@test.com')
        # 输入密码
        self.reg.password1_ipt('123456')
        # 确认密码
        self.reg.password2_ipt('123456')
        # 输入手机号
        self.reg.phone_tel_ipt('13233338822')
        # 点击立即注册
        self.reg.register_button()
        # 断言，错误提示信息
        info = self.reg.username_error_tips()
        self.assertEqual('- 用户名长度不能少于 3 个字符。',info)

    def test_02_register(self):
        """
        密码为假，其他为真
        """
        # 请求网址
        self.reg.get_website(self.reg.register_url)
        # 输入用户名
        self.reg.username_ipt('test123')
        # 输入邮箱
        self.reg.email_ipt('test5@test.com')
        # 输入密码
        self.reg.password1_ipt('12345')
        # 确认密码
        self.reg.password2_ipt('12345')
        # 输入手机号
        self.reg.phone_tel_ipt('13233338822')
        # 点击立即注册
        self.reg.register_button()
        # 断言，弹窗提示信息
        info = self.reg.get_alert_text()
        self.assertEqual('- 登录密码不能少于 6 个字符。\n',info)

    def test_03_register(self):
        """
        密码不一致，其他为真
        """
        # 请求网址
        self.reg.get_website(self.reg.register_url)
        # 输入用户名
        self.reg.username_ipt('test123')
        # 输入邮箱
        self.reg.email_ipt('test5@test.com')
        # 输入密码
        self.reg.password1_ipt('123456')
        # 确认密码
        self.reg.password2_ipt('123457')
        # 输入手机号
        self.reg.phone_tel_ipt('13233338822')
        # 点击立即注册
        self.reg.register_button()
        # 断言，弹窗提示信息
        info = self.reg.get_alert_text()
        self.assertEqual('- 两次输入密码不一致\n',info)

    def test_04_register(self):
        """
        邮箱为假，其他为真
        """
        # 请求网址
        self.reg.get_website(self.reg.register_url)
        # 输入用户名
        self.reg.username_ipt('test123')
        # 输入邮箱
        self.reg.email_ipt('test@test')
        # 输入密码
        self.reg.password1_ipt('123456')
        # 确认密码
        self.reg.password2_ipt('123456')
        # 输入手机号
        self.reg.phone_tel_ipt('13233338822')
        # 点击立即注册
        self.reg.register_button()
        # 断言，错误提示信息
        info = self.reg.email_error_tips()
        self.assertEqual('* 邮件地址不合法',info)

    def test_05_register(self):
        """
        手机号码为假，其他为真
        """
        # 请求网址
        self.reg.get_website(self.reg.register_url)
        # 输入用户名
        self.reg.username_ipt('test777')
        # 输入邮箱
        self.reg.email_ipt('test777@test.com')
        # 输入密码
        self.reg.password1_ipt('123456')
        # 确认密码
        self.reg.password2_ipt('123456')
        # 输入手机号
        self.reg.phone_tel_ipt('1321234567890')
        # 点击立即注册
        self.reg.register_button()
        # 错误提示信息
        username = self.index.font_text()
        # 退出登录
        self.index.logout()
        # 断言注册失败
        self.assertNotEqual('test777',username)

    def tearDown(self) -> None:
        """
        注册按钮
        """
        self.index.reg_btn()

    @classmethod
    def tearDownClass(cls) -> None:
        """
        关闭浏览器
        """
        cls.reg.quit()

if __name__ == '__main__':
    unittest.main(verbosity=2)
